// 初始化脚本
const { sequelize, User, Class } = require('./models');
const PasswordUtils = require('./utils/passwordUtils');

/**
 * 初始化脚本
 * 创建默认管理员账户和测试数据
 */
async function initialize() {
  try {
    // 同步数据库
    await sequelize.sync({ force: false });
    console.log('数据库同步完成');

    // 检查是否已存在管理员账户
    const existingAdmin = await User.findOne({ where: { username: 'admin', role: 'teacher' } });
    
    if (!existingAdmin) {
      // 创建默认管理员
      const hashedPassword = await PasswordUtils.hashPassword('admin123');
      const admin = await User.create({
        username: 'admin',
        password: hashedPassword,
        role: 'teacher',
        classId: null
      });
      console.log('默认管理员账户创建成功:', admin.username);
    } else {
      console.log('管理员账户已存在');
    }

    // 创建一些测试班级
    const classes = [
      { className: '高三1班', grade: '高三' },
      { className: '高三2班', grade: '高三' },
      { className: '高二1班', grade: '高二' },
      { className: '高二2班', grade: '高二' }
    ];

    for (const cls of classes) {
      const existingClass = await Class.findOne({ where: { className: cls.className } });
      if (!existingClass) {
        await Class.create(cls);
        console.log(`班级创建成功: ${cls.className}`);
      }
    }

    console.log('初始化完成');
  } catch (error) {
    console.error('初始化失败:', error);
  } finally {
    // 关闭数据库连接
    await sequelize.close();
  }
}

// 执行初始化
initialize();